#define E 5

typedef struct no_tree {
  char tipo;
  char pagina;
  int num;
  int *registros;
  int *apontadores;
  int esq;
  int dir;
} NoTree;

typedef NoTree* pNoTree;

void grava_no(pNoTree *no)
{
  FILE *No;
  int i;
  No=fopen((*no)->pagina,"w");
  fprintf(No,"%c\n%c\n%d\n", (*no)->tipo, (*no)->pagina,(*no)->num);

  for(i=0;i<(*no)->num;i++) {
      fprintf(No,"%d ",(*no)->registros[i]);
    }


  fprintf(No, "\n");

  for(i=0;i<(*no)->num;i++) {
      fprintf(No,"%d ",(*no)->apontadores[i]);
    }
  fprintf(No, "\n%d\n%d", (*no)->esq, (*no)->dir);

  free((*no)->registros;
  free((*no)->apontadores;


  free(*no);
  fclose(No);
}

int VerificaNo(pNoTree *tree) {
  return atoi((*tree)->tipo);
}

void Insere() {
  pNoTree no, novo;
  no = Percorre();

  if(no->num < E) {
    no->registros[num] = reg;
    no->apontadores[num] = apont;
  }

  else if(no->esq != NULL) {
    novo = LeNo(no->esq);
    if(novo->num < E) {
      split();
    }
  }
  else if(no->esq == NULL) {
    novo = criano();
    split();
  }
  else if(no->dir != NULL) {
    novo = LeNo(no->dir);
    if(novo->num < E) {
      split();
    }
  }
  else if(no->dir == NULL) {
    novo = criano();
    split();
  }
  else {
    change();
  }
}